Ana içeriğe geç

Basit API sunucusu

Deno, basit ve hafif API sunucuları oluşturmak için harika bir araçtır. Bu eğitimde, Deno Deploy kullanarak nasıl bir tane oluşturup dağıtacağınızı öğrenin.

Yerel bir API sunucusu oluşturun

Terminalinizde, server.ts adında bir dosya oluşturun.

touch server.ts

Basit bir bağlantı kısaltıcı hizmeti uygulayacağız, bunu Deno KV veritabanı ile yapacağız.

server.ts
const kv = await Deno.openKv();

Deno.serve(async (request: Request) => {
// Kısa bağlantılar oluştur
if (request.method == "POST") {
const body = await request.text();
const { slug, url } = JSON.parse(body);
const result = await kv.set(["links", slug], url);
return new Response(JSON.stringify(result));
}

// Kısa bağlantıları yönlendir
const slug = request.url.split("/").pop() || "";
const url = (await kv.get(["links", slug])).value as string;
if (url) {
return Response.redirect(url, 301);
} else {
const m = !slug ? "Lütfen bir slug sağlayın." : `Slug "${slug}" bulunamadı`;
return new Response(m, { status: 404 });
}
});
ipucu

Bu sunucuyu makinenizde şu komutla çalıştırabilirsiniz:

deno run -A --unstable-kv server.ts

Bu sunucu, HTTP GET ve POST istelerine yanıt verecektir. POST işleyici, istek gövdesinde slug ve url özelliklerine sahip bir JSON belgesi almayı bekler. slug, kısa URL bileşenidir ve url ise yönlendirmek istediğiniz tam URL'dir.

bilgi

Bu API uç noktasını cURL ile kullanmanın bir örneği:

curl --header "Content-Type: application/json" \
--request POST \
--data '{"url":"https://docs.deno.com/runtime/manual","slug":"denodocs"}' \
http://localhost:8000/

Yanıt olarak sunucu, set işleminin sonucunu temsil eden KV verileri ile JSON gönderir:

{ "ok": true, "versionstamp": "00000000000000060000" }

Sunucumuza yapılan bir GET isteği, bir URL slug'ını yol parametresi olarak alacak ve sağlanan URL'ye yönlendirecektir. Bu URL'yi tarayıcıda ziyaret edebilir veya bunu görmek için başka bir cURL isteği yapabilirsiniz!

curl -v http://localhost:8000/denodocs

Artık bir API sunucumuz olduğuna göre, bunu daha sonra Deno Deploy ile bağlayacağımız bir GitHub deposuna yükleyelim.


Uygulamanız için bir GitHub deposu oluşturun

GitHub hesabınıza giriş yapın ve yeni bir depo oluşturun. Şimdilik bir README veya başka dosyalar eklemeyi atlayabilirsiniz - boş bir depo işimizi görecektir.

API sunucunuzu oluşturduğunuz klasörde, bu komutları sırayla kullanarak yerel bir git deposu başlatın. your_username ve your_repo_name değerlerini uygun değerlerle değiştirmeyi unutmayın.

echo "# My Deno Link Shortener" >> README.md
git init
git add .
git commit -m "ilk taahhüt"
git branch -M main
git remote add origin https://github.com/your_username/your_repo_name.git
git push -u origin main

Artık server.ts dosyanızla birlikte bir GitHub deponuz olmalı, bu da bu örnek depo gibi görünebilir. Artık bu uygulamayı Deno Deploy üzerinde içe aktarabilir ve çalıştırabilirsiniz.


Projenizi içe aktarın ve dağıtın

Sonraki adım, Deno Deploy için bir hesap oluşturmak ve yeni bir proje oluşturmak. GitHub hesabınızı bağlayın ve az önce oluşturduğumuz depoyu seçin.

Deno Deploy proje seçimi

Yapılandırmanın şöyle görünmesi gerekir:

Deno Deploy yapılandırması

"Proje Dağıt" düğmesine tıklayın. Dağıtıldıktan sonra, bağlantı kısaltıcı hizmetiniz Deno Deploy üzerinde canlı olacaktır!

Deno Deploy kontrol paneli


Yeni bağlantı kısaltıcınızı test edin

Ek bir yapılandırma olmadan (Deno KV Deploy üzerinde çalışır), uygulamanız yerel makinenizde çalıştığı gibi çalışmalıdır.

Daha önce yaptığınız gibi POST işleyicisi ile yeni bağlantılar ekleyebilirsiniz. localhost URL'sini Deno Deploy üzerindeki canlı üretim URL'niz ile değiştirin:

curl --header "Content-Type: application/json" \
--request POST \
--data '{"url":"https://docs.deno.com/runtime/","slug":"denodocs"}' \
https://your-deno-project-url-here.deno.dev/

Benzer şekilde, tarayıcıda kısaltılmış URL'lerinizi ziyaret edebilir veya bir cURL komutuyla gelen yönlendirmeyi görebilirsiniz:

curl -v https://your-deno-project-url-here.deno.dev/denodocs
not

Bu projeyi beğendiyseniz, bir sonraki adım olarak Fresh gibi daha yüksek seviyeli bir web çerçevesine göz atabilir veya Deno KV hakkında daha fazla bilgi edinebilirsiniz. Basit API sunucunuzu dağıttığınız için harika bir iş çıkardınız!